package comunicacionServidor;

import java.util.ArrayList;
import java.util.List;

import org.apache.http.NameValuePair;
import org.apache.http.message.BasicNameValuePair;
import org.json.JSONObject;

import android.util.Log;

import tratamientoDatos.UsuarioSingleton;

public class FuncionesJSON {

	private JSONParser jsonParser;
	// Direccion donde realizar las peticiones
	private static String URL = "http://worldstrainer.no-ip.org:8000/manejador.php";
	// Tags posibles para las peticiones
	private static String login_tag = "login";
	private static String register_tag = "registro";
	private static String buscarRutas_tag = "buscarRutas";
	private static String buscarRuta_tag = "buscarRuta";
	private static String buscarMisRutas_tag = "buscarMisRutas";
	private static String guardarRuta_tag = "guardarRuta";
	private static String guardarInfo_tag = "guardarInfo";
	private static String guardarSoloInfo_tag = "guardarSoloInfo";
	private static String guardarMisNuevosDatos_tag = "guardarMisNuevosDatos";
	private static String misDatos_tag = "misDatos";

	public FuncionesJSON() {
		jsonParser = new JSONParser();
	}

	// Distintas funciones para, utilizando Json, realizar peticiones a la base
	// de datos remota
	// En el servidor debe existir un servicio que acepte y conteste a dichas
	// peticiones

	public JSONObject loginUser(String email, String contrasenya) {

		List<NameValuePair> params = new ArrayList<NameValuePair>();
		params.add(new BasicNameValuePair("tag", login_tag));
		params.add(new BasicNameValuePair("email", email));
		params.add(new BasicNameValuePair("contrasenya", contrasenya));

		Log.v("asynctask", "Antes parser");
		JSONObject json = jsonParser.getJSONFromUrl(URL, params);
		return json;
	}

	public JSONObject registrarse(String email, String nombre,
			String apellidos, String contrasenya, int edad, float peso,
			int altura) {

		List<NameValuePair> params = new ArrayList<NameValuePair>();
		params.add(new BasicNameValuePair("tag", register_tag));
		params.add(new BasicNameValuePair("email", email));
		params.add(new BasicNameValuePair("nombre", nombre));
		params.add(new BasicNameValuePair("apellidos", apellidos));
		params.add(new BasicNameValuePair("contrasenya", contrasenya));
		params.add(new BasicNameValuePair("edad", String.valueOf(edad)));
		params.add(new BasicNameValuePair("peso", String.valueOf(peso)));
		params.add(new BasicNameValuePair("altura", String.valueOf(altura)));
		try {
			JSONObject json = jsonParser.getJSONFromUrl(URL, params);
			return json;
		} catch (Exception e) {
		}
		return null;
	}

	public JSONObject guardarRuta(String nombre, String xml) {

		List<NameValuePair> params = new ArrayList<NameValuePair>();
		params.add(new BasicNameValuePair("tag", guardarRuta_tag));
		params.add(new BasicNameValuePair("nombre", nombre));
		params.add(new BasicNameValuePair("archivo", xml));
		JSONObject json = jsonParser.getJSONFromUrl(URL, params);
		return json;
	}

	public JSONObject guardarInfo(float duracion, double distanciaTotalCargada,
			double velocidadMedia, double velocidadMaxima, double calorias,
			int tipo, String nombreR) {

		List<NameValuePair> params = new ArrayList<NameValuePair>();
		params.add(new BasicNameValuePair("tag", guardarInfo_tag));
		params.add(new BasicNameValuePair("nombre", nombreR));
		params.add(new BasicNameValuePair("duracion", String.valueOf(duracion)));
		params.add(new BasicNameValuePair("distancia", String
				.valueOf(distanciaTotalCargada)));
		params.add(new BasicNameValuePair("velMedia", String
				.valueOf(velocidadMedia)));
		params.add(new BasicNameValuePair("velMaxima", String
				.valueOf(velocidadMaxima)));
		params.add(new BasicNameValuePair("calorias", String.valueOf(calorias)));
		params.add(new BasicNameValuePair("email", UsuarioSingleton
				.getInstance().getEmail()));
		String tipoRuta;
		if (tipo == 1)
			tipoRuta = "Ciclismo";
		else
			tipoRuta = "Carrera";
		params.add(new BasicNameValuePair("tipo", tipoRuta));
		JSONObject json = jsonParser.getJSONFromUrl(URL, params);
		return json;
	}

	public JSONObject guardarSoloInfo(float duracion,
			double distanciaTotalCargada, double velocidadMedia,
			double velocidadMaxima, double calorias, int tipo, String nombreR) {

		List<NameValuePair> params = new ArrayList<NameValuePair>();
		params.add(new BasicNameValuePair("tag", guardarSoloInfo_tag));
		params.add(new BasicNameValuePair("nombre", nombreR));
		params.add(new BasicNameValuePair("duracion", String.valueOf(duracion)));
		params.add(new BasicNameValuePair("distancia", String
				.valueOf(distanciaTotalCargada)));
		params.add(new BasicNameValuePair("velMedia", String
				.valueOf(velocidadMedia)));
		params.add(new BasicNameValuePair("velMaxima", String
				.valueOf(velocidadMaxima)));
		params.add(new BasicNameValuePair("calorias", String.valueOf(calorias)));
		params.add(new BasicNameValuePair("email", UsuarioSingleton
				.getInstance().getEmail()));
		String tipoRuta;
		if (tipo == 1)
			tipoRuta = "Ciclismo";
		else
			tipoRuta = "Carrera";
		params.add(new BasicNameValuePair("tipo", tipoRuta));
		JSONObject json = jsonParser.getJSONFromUrl(URL, params);
		return json;
	}

	public JSONObject buscarRutas(String nombreRuta) {

		List<NameValuePair> params = new ArrayList<NameValuePair>();
		params.add(new BasicNameValuePair("tag", buscarRutas_tag));
		params.add(new BasicNameValuePair("nombre", nombreRuta));
		JSONObject json = jsonParser.getJSONFromUrl(URL, params);
		return json;
	}

	public JSONObject buscarRuta(String nombreRuta) {

		List<NameValuePair> params = new ArrayList<NameValuePair>();
		params.add(new BasicNameValuePair("tag", buscarRuta_tag));
		params.add(new BasicNameValuePair("nombre", nombreRuta));
		JSONObject json = jsonParser.getJSONFromUrl(URL, params);
		return json;
	}

	public JSONObject misRutas() {

		UsuarioSingleton usuario = UsuarioSingleton.getInstance();
		List<NameValuePair> params = new ArrayList<NameValuePair>();
		params.add(new BasicNameValuePair("tag", buscarMisRutas_tag));
		params.add(new BasicNameValuePair("email", usuario.getEmail()));
		JSONObject json = jsonParser.getJSONFromUrl(URL, params);
		return json;
	}

	public JSONObject misDatos() {

		UsuarioSingleton usuario = UsuarioSingleton.getInstance();
		List<NameValuePair> params = new ArrayList<NameValuePair>();
		params.add(new BasicNameValuePair("tag", misDatos_tag));
		params.add(new BasicNameValuePair("email", usuario.getEmail()));
		JSONObject json = jsonParser.getJSONFromUrl(URL, params);
		return json;
	}

	public JSONObject guardarMisNuevosDatos(String nombre, String apellidos,
			String altura, String edad, String peso, String contrasenya) {

		List<NameValuePair> params = new ArrayList<NameValuePair>();
		params.add(new BasicNameValuePair("tag", guardarMisNuevosDatos_tag));
		params.add(new BasicNameValuePair("nombre", nombre));
		params.add(new BasicNameValuePair("apellidos", apellidos));
		params.add(new BasicNameValuePair("altura", altura));
		params.add(new BasicNameValuePair("edad", edad));
		params.add(new BasicNameValuePair("pesa", peso));
		params.add(new BasicNameValuePair("contrasenya", contrasenya));
		params.add(new BasicNameValuePair("email", UsuarioSingleton
				.getInstance().getEmail()));
		JSONObject json = jsonParser.getJSONFromUrl(URL, params);
		return json;
	}
}